package com.tms.basic.pojo.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 车辆信息实体类
 *
 * @author TMS
 * @since 2024-01-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("vehicle")
public class Vehicle {

    /**
     * 车辆ID，主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 车牌号
     */
    private String licensePlate;

    /**
     * 车辆类型ID
     */
    private Long vehicleTypeId;

    /**
     * 车辆型号
     */
    private String vehicleModel;

    /**
     * 车辆品牌
     */
    private String brand;

    /**
     * 车辆颜色
     */
    private String color;

    /**
     * 发动机号
     */
    private String engineNo;

    /**
     * 车架号
     */
    private String vin;

    /**
     * 购买日期
     */
    private LocalDate purchaseDate;

    /**
     * 注册日期/上牌日期
     */
    private LocalDate registrationDate;

    /**
     * 最大载重（公斤）
     */
    private BigDecimal maxLoadCapacityKg;

    /**
     * 最大体积（立方米）
     */
    private BigDecimal maxVolumeM3;

    /**
     * 车辆状态 (1:可用, 2:运输中, 3:维修中, 4:停用, 5:报废)
     */
    private Integer currentStatus;

    /**
     * 所属机构/公司ID
     */
    private Long organizationId;

    /**
     * 绑定的GPS设备ID
     */
    private String gpsDeviceId;

    /**
     * 保险到期日
     */
    private LocalDate insuranceDueDate;

    /**
     * 年检到期日
     */
    private LocalDate inspectionDueDate;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 逻辑删除标志 (0:未删除, 1:已删除)
     */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建人ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createdBy;

    /**
     * 更新人ID
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updatedBy;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
} 